package ge.escola;

import ge.util.Validadores;

public class Escola {

	private String nome, endereco, nucleoDeEducacao, telefone, email, anoFundacao;
	private String horaFragmento;
	Validadores validar = new Validadores();
	double duracaoAula;
	
	/**
	 * construtor da classe
	 * @param nome
	 * nome da escola
	 * @param endereco
	 * endereco
	 * @param nucleoDeEducacao
	 * nucleo de educacao ao qual pertence
	 * @param anoFundacao
	 * ano da fundacao
	 * @param telefone
	 * telefone
	 * @param email
	 * email
	 */
	public Escola(String nome,String endereco, String nucleoDeEducacao, String anoFundacao, String telefone, String email, 
			      String duracaoAula ) throws Exception{
		if(validar.validaNome(nome) && validar.validaEndereco(endereco) && validar.validaEmail(email) && validar.validaTelefone(telefone) && validar.validaAno(anoFundacao) && validar.validaNome(nucleoDeEducacao)){
			this.nome = nome.trim();
			this.endereco = endereco.trim();
			this.nucleoDeEducacao = nucleoDeEducacao.trim();
			this.telefone = telefone;
			this.email = email;
			this.anoFundacao = anoFundacao;
		    this.horaFragmento = duracaoAula;	
		}
		else{
			throw new Exception("Algum dado passado invalido");
		}
		this.duracaoAula = converteHora(duracaoAula);
	}
	
	/**
	 * retorna o nome da escola
	 * @return
	 */
	public String getNome(){
		return nome;
	}
	
	public String toString(){
		return "Nome: "+nome+"\n"+"Endereco: "+endereco+"\n"+"Telefone: "+telefone+"\n"+"Nucleo de Educacao: "+nucleoDeEducacao+"\n"+"Email: "+email+"\n"+"Ano de Fundacao: "+anoFundacao+"\n"+"Duracao das Aulas: "+duracaoAula;
	}
	
	public String getFragmento(int i){
		if (i==1){
			return getTelefone().substring(1,3);
		}
		else if(i==2){
			return getTelefone().substring(4,8);
		}
		else{
			return getTelefone().substring(10,13)+getTelefone().charAt(getTelefone().length()-1);
		}
		
	}
	
	public String getHoraFragmento(){
		return horaFragmento;
	}
	
	public String getFragmentoHora(int i){
		if(i==1){
			return horaFragmento.substring(0,2);
		}
		else{
			return ""+getHoraFragmento().charAt(getHoraFragmento().length()-2)+getHoraFragmento().charAt(getHoraFragmento().length()-1);
		}
	}
	
	/**
	 * retorna o endereco
	 * @return
	 */
	public String getEndereco(){
		return endereco;
	}
	
	/**
	 * retorna o nucleo de educacao ao qual pertence
	 * @return
	 */
	public String getNucleoDeEducacao(){
		return nucleoDeEducacao;
	}
	
	/**
	 * retorna o telefone da escola
	 * @return
	 */
	public String getTelefone(){
		return telefone;
	}
	
	/**
	 * retorna o email da escola
	 * @return
	 */
	public String getEmail(){
		return email;
	}
	
	/**
	 * retorna o ano da fundacao da escola
	 * @return
	 */
	public String getAnoFundacao(){
		return anoFundacao;
	}
	
	/**
	 * muda o atributo nome
	 * @param novoNome
	 * nome novo
	 */
	public void setNome(String novoNome) throws Exception{
		validar.validaNome(novoNome);
		nome = novoNome;
	}
	
	/**
	 * muda o atributo endereco
	 * @param novoEndereco
	 * novo endereco
	 */
	public void setEndereco(String novoEndereco) throws Exception{
		validar.validaNome(novoEndereco);
		endereco = novoEndereco;
	}
	
	/**
	 * muda o atributo nucleo de educacao
	 * @param novoNucleo
	 * novo nucleo de educacao
	 */
	public void setNucleoDeEducacao(String novoNucleo)throws Exception{
		validar.validaNome(novoNucleo);
		nucleoDeEducacao = novoNucleo;
	}
	
	/**
	 * muda o atributo telefone
	 * @param novoTelefone
	 * novo telefone
	 */
	public void setTelefone(String novoTelefone)throws Exception{
		validar.validaTelefone(novoTelefone);
		telefone = novoTelefone;
	}
	
	/**
	 * muda o atributo email
	 * @param novoEmail
	 * novo email
	 */
	public void setEmail(String novoEmail)throws Exception{
		validar.validaEmail(novoEmail);
		email = novoEmail;
	}
	
	/**
	 * muda o atributo ano
	 * @param novoAno
	 * novo ano
	 */
	public void setAnoFundacao(String novoAno)throws Exception{
		validar.validaAno(novoAno);
		anoFundacao = novoAno;
	}
	
	/**
	 * retorna a duracao de cada aula
	 * @return
	 */
	public double getDuracaoAula() {
		return duracaoAula;
	}

	/**
	 * muda o atributo
	 * @param duracaoAula
	 */
	public void setDuracaoAula(String duracaoAula) {
		this.horaFragmento = duracaoAula;
		this.duracaoAula = converteHora(duracaoAula);
	}

	private double converteHora(String duracaoAula){
		String[] duracao = duracaoAula.split(":");
		double hora = Double.valueOf(duracao[0]);
		double minuto = Double.valueOf(duracao[1]);
		
		double convertido = hora + (minuto/60);
		return convertido;
	}
	
}